1. Field of the Invention
This invention relates to an application interface and, more specifically to synchronizing an application's graphical user interface and data.
2. Background Art
Software applications designed to run on computer systems allow an application user to manipulate data associated with an application. For example, an accounting application allows a user to manipulate accounting information. A graphical user interface (GUI) is typically designed for a software application that allows an application user to enter and update application data.
In the past, an application such as an accounting application was required to include program code to synchronize an interface object (e.g., a text field) of the application's GUI with the underlying data that was used to initialize the interface object. The developer of the application's program code had to generate code that updated an interface object with the underlying data. That is, the application developer generated program code configured to retrieve the data from its data source, provide the data to the interface object, and propagate changes entered in the interface object to the data's storage location in the data source. If the application program did not include this program code, an interface object and its underlying data could become asynchronous.
In developing the application's program code, an application developer must be cognizant of the interface objects and/or data sources that are affected by each change. Otherwise, the application programmer may fail to include program code that propagates a change. In this case, an interface object and data source will not be synchronized. This can result in erroneous data being displayed in the interface object, or a data update that is entered in an interface object not modifying the underlying data.
Another issue of synchronization occurs where an interface object displays the result of an expression that must be evaluated whenever a change occurs to an operand of the expression. For example, where an expression is evaluated using data from one or more interface objects or underlying data sources, an application's program code must be configured to recognize when a change occurs to any of the interface objects or data sources that affect the expression. In developing the application's program code, the application programmer must therefore generate program code to recognize a change and re-evaluate the expression when a change occurs. If the application program fails to recognize when a change occurs, the interface object that display's the expression's result can display erroneous data.
The application may require that a change that occurs in an interface object be validated before it is written to a data source. In the past, an application programmer must generate program code that ensures that the validation is performed prior to updating the underlying data. If the application developer fails to include program code configured to validate data, invalid data that is entered in an interface object can update the underlying data. This results in corruption of the underlying data source.
Thus, it is important that an application program be configured to ensure that interface objects in the application program's GUI and underlying data remain synchronized and valid. The trust in application software is dependent on synchronizing the application program's GUI and its underlying data, and ensuring that the underlying data is valid. Unfortunately, there is a potential for error where an application programmer is required to write code to ensure that all of the dependencies between an application program's GUI interface objects and underlying data remain in sync and that data is validated before it is written to the underlying data source.